package tt.dz.order.vo;

import org.apache.commons.lang.StringUtils;

import tt.dz.order.exception.ParamLackException;
import tt.dz.order.exception.ParamNotFoundInSystemException;
import tt.dz.order.util.OrderConstant;

/**
 * @Title 用户支付信息，由APP-Server或第三方服务器传过来
 * @author zhoutian
 * @date 2015-11-26
 */
public class UserPayInfoVO {
	// 卡号
	private String cardNo;
	// 卡类型 08 虚拟，06 实体卡  ，07  身份识别卡
	private String cardType;
	// 订单号
	private String orderNo;
	// 支付方式码：1 第三方实时支付 2 统付 3 企业支付 4 电子钱包支付 5 代付 6 线下卡
	private Integer payTypeCode;
	// 支付渠道编码：0 有贝先付 1 支付宝 2 微信支付
	private String payChannelCode;
	// 付款客户号,不用传
	private transient String payer;

	public String getOrderNo() {
		return orderNo;
	}

	public void setOrderNo(String orderNo) {
		this.orderNo = orderNo;
	}

	public Integer getPayTypeCode() {
		return payTypeCode;
	}

	public void setPayTypeCode(Integer payTypeCode) {
		this.payTypeCode = payTypeCode;
	}

	public String getPayChannelCode() {
		return payChannelCode;
	}

	public void setPayChannelCode(String payChannelCode) {
		this.payChannelCode = payChannelCode;
	}

	public String getPayer() {
		return payer;
	}

	public void setPayer(String payer) {
		this.payer = payer;
	}

	public String getCardNo() {
		return cardNo;
	}

	public void setCardNo(String cardNo) {
		this.cardNo = cardNo;
	}

	public String getCardType() {
		return cardType;
	}

	public void setCardType(String cardType) {
		this.cardType = cardType;
	}

	public UserPayInfoVO() {
	}

	public void validate() throws ParamLackException, ParamNotFoundInSystemException {
		if (StringUtils.isBlank(cardNo)) {
			throw new ParamLackException("cardNo为空");
		}
		if (StringUtils.isBlank(cardType)) {
			throw new ParamLackException("cardType为空");
		}
		if (StringUtils.isBlank(orderNo)) {
			throw new ParamLackException("orderNo为空");
		}
		if (payTypeCode == null) {
			throw new ParamLackException("payTypeCode为空");
		}
		/**
		 * 第三方实时支付的时候，支付渠道不能为空
		 */
		if ((OrderConstant.OrderPayWay.thirdImmediately.value() == payTypeCode) && payChannelCode == null) {
			throw new ParamLackException("payChannelCode为空");
		}
	}
}
